<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            题目描述： 给出一个非负整数数组，你最初定位在数组的第一个位置。
            数组中的每个元素代表你在那个位置可以跳跃的最大长度。
            判断你是否能到达数组的最后一个位置。
        */
        /* 
            思路： 
            1.推导子问题：f(n)表示当前n是否可达，f(n) = i:0-n (f[i] = true)&&(i + a[i] >n) true
        */

        function Jump(A){
            // 初始化状态，第一块石头默认可达
            let f = new Array(A.length).fill(false)
            f[0] = true

            for(let i = 0; i < A.length; i++){
                for(let j = 0;j < i; j++){
                    if(f[j]&&(j + A[j] >= i)){
                        f[i] = true
                        break
                    }
                }
            }
            return f[A.length - 1]
        }
    </script>
</body>
</html>